home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / e-lang / bguiv412.lha / BGUI_Ev41_2 / sources / AddButtons.e < prev    next >
Text File  |  1996-05-01  |  10KB  |  208 lines

  1. /*
  2. **      AddButtons.e
  3. **
  4. **      (C) Copyright 1994 Paul Weterings.
  5. **          All Rights Reserved.
  6. **
  7. **      Modified by Ian J. Einman, 4/26/96
  8. **      Modified by Dominique Dutoit, 5/1/96
  9. */
  10.  
  11. OPT OSVERSION=37
  12. OPT PREPROCESS
  13.  
  14. MODULE 'libraries/bgui',
  15.        'libraries/bgui_macros',
  16.        'libraries/gadtools',
  17.        'bgui',
  18.        'tools/boopsi',
  19.        'utility/tagitem',
  20.        'intuition/classes',
  21.        'intuition/classusr',
  22.        'intuition/gadgetclass',
  23.        'graphics/text'
  24. /*
  25.  *      Object ID's. Please note that the ID's are shared
  26.  *      between the menus and the gadget objects.
  27.  */
  28. CONST   ID_ADD = 21,
  29.         ID_QUIT= 22,
  30.         ID_INS=23,
  31.         ID_REM=24
  32. /*
  33.  *      Simple button creation macros.
  34.  */
  35. #define AddButton\
  36.     ButtonObject,\
  37.         LAB_LABEL,              'Added',\
  38.         LAB_STYLE,              FSF_BOLD,\
  39.         FuzzButtonFrame,\
  40.     EndObject
  41.  
  42. #define InsButton\
  43.     ButtonObject,\
  44.         LAB_LABEL,              'Inserted',\
  45.         LAB_STYLE,              FSF_BOLD,\
  46.         FuzzButtonFrame,\
  47.     EndObject
  48.  
  49. #define FuzzButton(label,id)\
  50.     ButtonObject,\
  51.         LAB_LABEL,              label,\
  52.         LAB_UNDERSCORE,         "_",\
  53.         GA_ID,                  id,\
  54.         FuzzButtonFrame,\
  55.     EndObject
  56.  
  57. PROC main()
  58.         DEF window
  59.         DEF wo_window, go_add, go_quit, go_ins, go_rem
  60.         DEF addobj[20]:ARRAY OF LONG, base
  61.         DEF signal = 0, rc
  62.         DEF running = TRUE, ok = FALSE
  63.         DEF x = 0, xx
  64.         DEF simplemenu
  65.  
  66.         /*
  67.         *      Simple menu strip.
  68.         */
  69.         simplemenu := [ Title( 'Project' ),
  70.                             Item( 'Add',        'A',    ID_ADD ),
  71.                             Item( 'Insert',     'I',    ID_INS ),
  72.                             Item( 'Remove All', 'R',    ID_REM ),
  73.                             ItemBar,
  74.                             Item( 'Quit',       'Q',    ID_QUIT),
  75.                         End ]:newmenu
  76.  
  77.         /*
  78.         **      Open the library.
  79.         **/
  80.         IF bguibase := OpenLibrary( 'bgui.library', 41 )
  81.                 /*
  82.                 **      Create a window object.
  83.                 **/
  84.                 wo_window := WindowObject,
  85.                         WINDOW_TITLE,           'Add/Insert Demo',
  86.                         WINDOW_MENUSTRIP,       simplemenu,
  87.                         WINDOW_LOCKHEIGHT,      TRUE,
  88.                         WINDOW_AUTOASPECT,      TRUE,
  89.                         WINDOW_AUTOKEYLABEL,    TRUE,
  90.                         WINDOW_MASTERGROUP,
  91.                                 base := HGroupObject,
  92.                                     StartMember, go_add  := FuzzButton( '_Add',        ID_ADD  ), EndMember,
  93.                                     StartMember, go_ins  := FuzzButton( '_Insert',     ID_INS  ), EndMember,
  94.                                     StartMember, go_rem  := FuzzButton( '_Remove all', ID_REM  ), EndMember,
  95.                                     StartMember, go_quit := FuzzButton( '_Quit',       ID_QUIT ), EndMember,
  96.                                 EndObject,
  97.                         EndObject
  98.  
  99.                 /*
  100.                 **      Object created OK?
  101.                 **/
  102.                 IF ( wo_window )
  103.                         /*
  104.                         **      Open up the window.
  105.                         **/
  106.                         IF ( window := WindowOpen( wo_window ) )
  107.                                 /*
  108.                                 **      Obtain signal mask.
  109.                                 **/
  110.                                 GetAttr( WINDOW_SIGMASK, wo_window, {signal} )
  111.                                 /*
  112.                                 **      Poll messages.
  113.                                 **/
  114.                                 WHILE running = TRUE
  115.                                         /*
  116.                                         **      Wait for the signal.
  117.                                         **/
  118.                                         Wait( signal )
  119.                                         /*
  120.                                         **      Call uppon the event handler.
  121.                                         **/
  122.                                         WHILE ( rc := HandleEvent( wo_window )) <> WMHI_NOMORE
  123.                                                 SELECT rc
  124.                                                         CASE    WMHI_CLOSEWINDOW
  125.                                                                 running := FALSE
  126.                                                         CASE    ID_QUIT
  127.                                                                 running := FALSE
  128.                                                         CASE    ID_ADD
  129.                                                                 IF ( x = 19 )
  130.                                                                     WriteF( 'Max Nr. of gadgets\n' )
  131.                                                                 ELSE
  132.                                                                     INC x
  133.                                                                     WindowClose( wo_window )
  134.  
  135.                                                                     addobj[ x ] := AddButton
  136.  
  137.                                                                     ok := domethod( base, [ GRM_ADDMEMBER,      addobj[ x ],
  138.                                                                                             LGO_FIXMINHEIGHT,   FALSE,
  139.                                                                                             LGO_WEIGHT,         DEFAULT_WEIGHT,
  140.                                                                                             TAG_END ] )
  141.  
  142.                                                                     window := WindowOpen( wo_window )
  143.  
  144.                                                                     IF ( ok = 0 ) OR ( window = 0 )
  145.                                                                         domethod( base, [ GRM_REMMEMBER, addobj[ x ], TAG_END ] )
  146.                                                                         DEC x
  147.                                                                         window := WindowOpen( wo_window )
  148.                                                                         WriteF( 'Last object did not fit!\n' )
  149.                                                                     ENDIF
  150.                                                                 ENDIF
  151.                                                         CASE    ID_REM
  152.                                                                 IF ( x > 0 )
  153.                                                                     WindowClose( wo_window )
  154.  
  155.                                                                     FOR xx := 1 TO x
  156.                                                                         domethod( base, [ GRM_REMMEMBER, addobj[ xx ], TAG_END ] )
  157.                                                                     ENDFOR
  158.  
  159.                                                                     window := WindowOpen( wo_window )
  160.                                                                     x := 0
  161.                                                                 ELSE
  162.                                                                     WriteF( 'Were out of gadgets!\n' )
  163.                                                                 ENDIF
  164.                                                         CASE    ID_INS
  165.                                                                 IF ( x = 19 )
  166.                                                                     WriteF( 'Max Nr. of gadgets\n' )
  167.                                                                 ELSE
  168.                                                                     INC x
  169.                                                                     WindowClose( wo_window )
  170.  
  171.                                                                     addobj[ x ] := InsButton
  172.  
  173.                                                                     ok := domethod( base, [ GRM_INSERTMEMBER,   addobj[ x ], go_rem,
  174.                                                                                             LGO_FIXMINHEIGHT,   FALSE,
  175.                                                                                             LGO_WEIGHT,         DEFAULT_WEIGHT,
  176.                                                                                             TAG_END ] )
  177.  
  178.                                                                     window := WindowOpen( wo_window )
  179.  
  180.                                                                     IF ( ok = 0 ) OR ( window = 0 )
  181.                                                                         domethod( base, [ GRM_REMMEMBER, addobj[ x ], TAG_END ] )
  182.                                                                         DEC x
  183.                                                                         window := WindowOpen( wo_window )
  184.                                                                         WriteF( 'Last object did not fit!\n' )
  185.                                                                     ENDIF
  186.                                                                 ENDIF
  187.                                                 ENDSELECT
  188.                                         ENDWHILE
  189.                                 ENDWHILE
  190.                         ELSE
  191.                             WriteF( 'Unable to open the window\n' )
  192.                         ENDIF
  193.                         /*
  194.                         **      Disposing of the object
  195.                         **      will automatically close the window
  196.                         **      and dispose of all objects that
  197.                         **      are attached to the window.
  198.                         **/
  199.                         DisposeObject( wo_window )
  200.                 ELSE
  201.                         WriteF( 'Unable to create a window object\n' )
  202.                 ENDIF
  203.                 CloseLibrary(bguibase)
  204.         ELSE
  205.                 WriteF( 'Unable to open the bgui.library\n' )
  206.         ENDIF
  207. ENDPROC NIL
  208.